package org.shj.demo;

import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer;
import com.hankcs.hanlp.tokenizer.NLPTokenizer;
import com.hankcs.hanlp.tokenizer.lexical.AbstractLexicalAnalyzer;
import org.shj.utils.FileUtil;

import java.util.List;

/**
 * @author Shen Huang Jian
 * @date 2020-11-12 17:17
 */
public class SaveLearnModel {

    public static void main(String[] args){

        String segModel = "d:\\tmp\\model\\cws.bin";
        String nerModel = "d:\\tmp\\model\\ner.bin";
        String posModel = "d:\\tmp\\model\\pos.bin";

        long begin = System.currentTimeMillis();
        PerceptronLexicalAnalyzer analyzer = (PerceptronLexicalAnalyzer)NLPTokenizer.ANALYZER;
        System.out.println("load takes: " + (System.currentTimeMillis() - begin));

        //System.out.println(analyzer.analyze("砂粗俗脸菜森罗万象困在四月份楞粗从"));
        analyzer.learn("砂粗/n 俗脸/n 菜森/nr 罗万象/nr 困/vn 在四月份楞粗从/n");
//        analyzer.learn("总统/n 普京/nr  与// 特朗普通电话讨论太空探索技术公司");
//        analyzer.learn("与/c 特朗普/nr 通/v 电话/n 讨论/v [太空/s 探索/vn 技术/n 公司/n]/nt");
//        analyzer.learn("在/p 浙江/ns 金华/ns 出生/v");
//        analyzer.learn("巨鹿郡/nz 有/v 兄弟/n 三/m 人/n ，/w 一/m 名/q 张角/nr ，/w 一/m 名/q 张宝/nr ，/w 一/m 名/q 张梁/nr 。/w 那/r 张角本/nr 是/v 个/q 不/d 第秀才/v ，/w 因/p 入山/v 采药/v ，/w 遇/v 一/m 老人/n ，/w 碧眼/n 童颜/nr ，/w 手执/v 藜杖/n ，/w 唤角/ns 至/p 一/m 洞/n 中/f ，/w 以/p 天书/n 三/m 卷/q 授/v 之/u ，/w 曰/Vg ：/w “/w 此/r 名/q 《/w 太平/ns 要/v 术/Ng 》/w ，/w 汝得之/nr ，/w 当代/t 天/n 宣化/v ，/w 普救/v 世人/n ；/w 若萌/v 异心/n ，/w 必获/v 恶报/n 。/w ”/w 角拜/v 问/v 姓名/n 。/w 老人/n 曰/Vg ：/w “/w 吾/v 乃/v 南华/ns 老仙/n 也/y 。/w ”/w 言讫/n ，/w 化阵/v 清风/n 而/c 去/v 。/w 角得/v 此书/r ，/w 晓夜/d 攻习/v ，/w 能/v 呼风唤雨/i ，/w 号/n 为/v “/w 太平/ns 道人/n ”/w 。/w 中平/ns 元年/t 正月/t 内/f ，/w 疫气/n 流行/v ，/w 张角/nr 散施/v 符水/nz ，/w 为/p 人/n 治病/v ，/w 自称/v “/w 大贤/nz 良师/n ”/w 。/w 角/n 有/v 徒弟/n 五百/m 余/m 人/n ，/w 云游四方/nz ，/w 皆/d 能/v 书/Vg 符念咒/n 。/w 次/q 后/f 徒众/nz 日/Ng 多/a ，/w 角/n 乃立/v 三十六/m 方/q ，/w 大方/n 万/m 余/m 人/n ，/w 小方/n 六七千/m ，/w 各立/r 渠帅/n ，/w 称为/v 将军/n ；/w 讹言/nz ：/w “/w 苍天/n 已/d 死/v ，/w 黄天/nr 当立/v ；/w 岁/v 在/p 甲子/n ，/w 天下/n 大吉/i 。/w ”/w 令/v 人/n 各/r 以/p 白土/nr 书/n “/w 甲子/n ”/w 二/m 字/n 于/p 家中/s 大门/n 上/f 。/w 青/a 、/w 幽/Ag 、/w 徐/nr 、/w 冀/j 、/w 荆/n 、/w 扬/Vg 、/w 兖/v 、/w 豫八州/ns 之人/r ，/w 家家/q 侍奉/v 大贤/nz 良师/n 张角/nr 名字/n 。/w 角遣其党/n 马元义/nr ，/w 暗赍/v 金帛/n ，/w 结交/v 中涓/n 封-/n ，/w 以为/v 内应/v 。/w 角/n 与/p 二弟/n 商议/n 曰/Vg ：/w “/w 至/p 难得者/n ，/w 民心/n 也/y 。/w 今民/nr 心已顺/i ，/w 若/v 不/d 乘/v 势取/v 天下/n ，/w 诚为/d 可惜/v 。/w ”/w 遂/v 一面/d 私造/v 黄旗/ns ，/w 约期/vn 举事/i ；/w 一面/d 使/v 弟子/n 唐周/nr ，/w 驰/Vg 书报封/n 。/w 唐/m 周/q 乃径/n 赴/v 省/n 中/f 告变/v 。/w 帝召/v 大将/nr 军何/n 进/v 调兵擒马元义/n ，/w 斩/v 之/u ；/w 次/q 收/v 封-/n 等/u 一/d 干/v 人/n 下狱/v 。/w 张角闻/nr 知事露/v ，/w 星夜/n 举兵/nz ，/w 自称/v “/w 天公/n 将军/n ”/w ，/w 张宝称/v “/w 地公/n 将军/n ”/w ，/w 张梁称/v “/w 人公/n 将军/n ”/w 。/w 申言/v 于/p 众/Ng 曰/Vg ：/w “/w 今汉/t 运/v 将/d 终/Vg ，/w 大圣人/n 出/v 。/w 汝等皆宜/ns 顺天/d 从/p 正/d ，/w 以/p 乐/a 太平/a 。/w ”/w 四方/n 百姓/n ，/w 裹黄巾/n 从/p 张角反者/n 四五十万/m 。/w 贼势浩大/j ，/w 官军/n 望风而靡/nz 。/w 何/r 进/v 奏帝/n 火速/d 降诏/v ，/w 令/v 各处/r 备御/v ，/w 讨贼/v 立功/v 。/w 一/m 面/q 遣中郎将/n 卢植/nr 、/w 皇甫嵩/n 、/w 朱-/nr ，/w 各/r 引精兵/n 、/w 分/v 三/m 路/q 讨/v 之/u 。/w 　且/c 说/v 张角/nr 一军/n ，/w 前犯/v 幽州/ns 界分/n 。/w 幽州/ns 太守/n 刘焉/nr ，/w 乃/v 江夏/n 竟/d 陵人氏/v ，/w 汉鲁恭王/n 之后/f 也/y 。/w 当时/t 闻/v 得/u 贼兵/nz 将/d 至/v ，/w 召校/v 尉/v 邹靖计议/n 。/w 靖/d 曰/Vg ：/w “/w 贼/v 兵众/n ，/w 我/r 兵寡/n ，/w 明公宜/ns 作速/d 招军/nt 应敌/v 。/w ”/w 刘焉然/nr 其/r 说/v ，/w 随即/d 出榜/v 招募/v 义兵/n");

        //System.out.println(analyzer.analyze("砂粗俗脸菜森罗万象困在四月份楞粗从"));

        try {
            analyzer.getPerceptronSegmenter().getModel().save(segModel);
            analyzer.getPerceptionNERecognizer().getModel().save(nerModel);
            analyzer.getPerceptronPOSTagger().getModel().save(posModel);
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}
